package com.muyu.system.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.system.domain.model.SysNoticeAddModel;
import com.muyu.system.domain.model.SysNoticeUpdModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

/**
 * 通知公告表 sys_notice
 *
 * @author muyu
 */
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("sys_notice")
public class SysNotice extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 公告ID
     */
    @TableId(type = IdType.AUTO)
    private Long noticeId;

    /**
     * 公告标题
     */
    private String noticeTitle;

    /**
     * 公告类型（1通知 2公告）
     */
    private String noticeType;

    /**
     * 公告内容
     */
    private String noticeContent;

    /**
     * 公告状态（0正常 1关闭）
     */
    private String status;



    /**
     * 将通知公告添加模型构建成原生实体类
     *
     * @param sysNoticeAddModel 通知公告添加模型
     * @return 原生实体类
     */
    public static SysNotice addModelBuildToInfo(SysNoticeAddModel sysNoticeAddModel){
        return SysNotice.builder()
                .noticeId(sysNoticeAddModel.getNoticeId())
                .noticeTitle(sysNoticeAddModel.getNoticeTitle())
                .noticeType(sysNoticeAddModel.getNoticeType())
                .noticeContent(sysNoticeAddModel.getNoticeContent())
                .status(sysNoticeAddModel.getStatus())
                .createBy(sysNoticeAddModel.getCreateBy())
                .createTime(sysNoticeAddModel.getCreateTime())
                .build();
    }


    /**
     * 将通知公告更新模型构建成原生实体类
     *
     * @param id                通知公告ID
     * @param sysNoticeUpdModel 通知公告更新模型
     * @return 原生实体类
     */
    public static SysNotice updReqBuildToInfo(Long id, SysNoticeUpdModel sysNoticeUpdModel){
        return SysNotice.builder()
                .noticeId(id)
                .noticeTitle(sysNoticeUpdModel.getNoticeTitle())
                .noticeType(sysNoticeUpdModel.getNoticeType())
                .noticeContent(sysNoticeUpdModel.getNoticeContent())
                .status(sysNoticeUpdModel.getStatus())
                .updateBy(sysNoticeUpdModel.getUpdateBy())
                .updateTime(sysNoticeUpdModel.getUpdateTime())
                .build();
    }
 }
